﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace Demo.Mmose.Core.Entity.Suit.Spell
{
    /// <summary>
    /// 
    /// </summary>
    public interface ISpellHandler
    {
        /// <summary>
        /// 开始施法
        /// </summary>
        /// <param name="target"></param>
        void Cast( Spell spell, object arg );

        /// <summary>
        /// 创建法术
        /// </summary>
        /// <returns></returns>
        Spell CreateSpell( object arg );
    }

    /// <summary>
    /// 
    /// </summary>
    public interface IEffectHandler
    {
        /// <summary>
        /// 
        /// </summary>
        void Apply( Effect effect, object arg );

        /// <summary>
        /// 创建效果
        /// </summary>
        /// <returns></returns>
        Effect CreateEffect( object arg );
    }

    /// <summary>
    /// 
    /// </summary>
    public interface IAuraHandler
    {
        /// <summary>
        /// 
        /// </summary>
        void Initialize( Aura aura );

        /// <summary>
        /// 
        /// </summary>
        void Apply( Aura aura );

        /// <summary>
        /// 默认检测成功
        /// </summary>
        /// <param name="aura"></param>
        /// <returns></returns>
        bool CheckValidTarget( Aura aura );

        /// <summary>
        /// 
        /// </summary>
        void Remove( Aura aura );

        /// <summary>
        /// 
        /// </summary>
        /// <param name="aura"></param>
        void Cleanup( Aura aura );

        /// <summary>
        /// 创建光环
        /// </summary>
        /// <returns></returns>
        Aura CreateAura( object arg );
    }

}
